1. Field of the Invention
The present invention generally relates to query processing and, more particularly, to managing access by multiple users to persistently stored query results.
2. Description of the Related Art
Databases are computerized information storage and retrieval systems. A relational database management system is a computer database management system (DBMS) that uses relational techniques for storing and retrieving data. The most prevalent type of database is the relational database, a tabular database in which data is defined so that it can be reorganized and accessed in a number of different ways. A distributed database is one that can be dispersed or replicated among different points in a network. An object-oriented programming database is one that is congruent with the data defined in object classes and subclasses.
Regardless of the particular architecture, a DBMS can be structured to support a variety of different types of operations. Such operations can be configured to retrieve, add, modify and delete information being stored and managed by the DBMS. Standard database access methods support these operations using high-level query languages, such as the Structured Query Language (SQL). The term “query” denominates a set of commands that cause execution of operations for processing data from a stored database. For instance, SQL supports four types of query operations, i.e., SELECT, INSERT, UPDATE and DELETE. A SELECT operation retrieves data from a database, an INSERT operation adds new data to a database, an UPDATE operation modifies data in a database and a DELETE operation removes data from a database.
Any requesting entity, including applications, operating systems and, at the highest level, users, can issue queries against data in one or more databases. Queries may be predefined (i.e., hard coded as part of an application) or may be generated in response to input (e.g., user input). A given requesting entity may execute a multiplicity of different queries. Upon execution of each query against one or more databases, a corresponding query result is returned to the requesting entity. Any executed query and corresponding query result(s) can be stored persistently.
A typical approach for managing query results involves RowSet-like technologies. More specifically, a RowSet is an instance of a Java® RowSet class which in turn is part of a RowSet framework which has been created on the basis of the Java® programming language. The RowSet framework provides others the ability to query one or more databases for obtaining a series of database rows forming a query result, i.e., a rowset. The rowset can be detached from the one or more databases and stored as a persistent data object. Thus, the rowset can be accessed and modified as required independent of the one or more databases. Subsequently, the modified rowset and the one or more databases can be synchronized to reflect the modifications performed on the rowset in the one or more databases. A given rowset can be provided to a plurality of users which can, thus, share data contained in the rowset.
However, one problem when dealing with rowsets is that, conventionally, a rowset can only be shared by different users having identical access rights. In other words, if two different users have distinct security settings, they cannot share a given rowset as the access rights of at least one of the users may not authorize this user(s) to access one or more portions of the given rowset. For instance, assume a rowset which contains data about a given research activity in a company. This rowset is accessible by researchers in the company. Assume now that at least one portion of the data contained in the rowset is useful to project managers of the company. However, as project managers and researchers generally have differing access rights, the project managers would not be able to access the at least one portion of the data in the rowset.
Therefore, there is a need for an efficient and more flexible technique for sharing persistently stored query results between multiple users, whereby at least some of the users may have different access rights.